
从早期将XML转换为关系型数据表或大型对象,到今日转向原生 XML 数据型态,关系型数据库与 XML 之间的合作日益紧密。
10 年前 XML 开始起草并向 W3C 提案,而在 1998 年后成为W3C的标准。事隔 10 年之后,XML 已经随着网络应用日益普及,更在 Web Services 和 SOA 推波助澜下,可以预见 XML 的角色将会更形重要。
观察 XML 的重要发展趋势之一,是 XML 和关系型数据库的合流。IBM 甫于 6 月在美国发表的新版本数据库 DB2 9.0,便以原生 XML 数据型态和存取技术作为改版重点之一。事实上,微软于去年年底推出的 SQL Server 2005 同样也在 XML 上下了一番功夫,改变过去将 XML 转换成关系型数据表的存放方式,让开发人员可以用 XML 的方法使用储存在数据库中的 XML 文件或片段。其它如 Oracle 或 Sybase 等数据库也都具备在数据库中处理 XML 的技术和工具。由于 XML 部分技术仍在审议,因此每家数据库厂商除对标准的规格支持外,也各自发展不同的实作方式。XML 比关联性数据库更具弹性
就数据储存而言,关系型数据库已经是相当成熟的应用,从 80 年代商用产品出现至今,早已深入企业储存及数据应用的核心。相较之下, XML 部分技术尚且在发展阶段,为什么关系型数据库竞相拥抱 XML 呢?
比较两者处理数据的方式,关系型数据库是透过详细定义和控制结构化数据的方式,达到数据增、删、查询的目的。因此它是以字段数据型态的精确定义,将数据以列(row)的方式一笔笔储存,再透过数据表之间的互相关联,建构出数据和数据结合后的复杂结果。企业在日常营运可以仰赖这种方式来储存数据,像是 ERP、CRM 这种应用程序产生的数据,都可以透过数据库来储存。
由于 XML 是以阶层式的树状结构作为储存架构,透过元素(Element)和属性(Attribute)来包含数据,再利用 XML schema 控制数据的正确性。这种架构特性,让 XML 随时可以新增字段,只要吻合 XML schema 的定义,字段便可以弹性置入。相对而言,关系型数据库一旦要修改字段,牵动的范围相当大,既会影响到过去的数据,与其它数据表的关系也必须一并思考在内,在变动的弹性上较小。由于企业内产生的数据并非总是这么规矩,一旦遇到非结构化的数据型态,关系型数据库便显得左右支绌,施展不开手脚。
此外,XML 透过元素和属性描述数据,以及不需转译编码的文字型态,让它可以不受操作系统和应用程序的限制,在数据交换上相当容易进行,而且它的内容可以被人类解读之外,也能被机器或应用程序所辨读,微软在 Vista 或新版本的 Office 上,就大量应用 XML 作为应用程序的设定或文件的产出格式。
鉴于这些 XML 的优势,可以解决关系型数据库在应用及储存上的不足,因此传统数据库大厂纷纷实作出支持 XML 的方式,让企业的资料应用可以更为全面。
保留 XML 原生数据格式成为主流
关系型数据库在支持 XML 上大致有二种方式,一种是将 XML 拆解成关系型数据库的运作逻辑,另外一种则是保留 XML 原有的运作方式,后者又称之为原生 XML 数据库。
早期关系型数据库的作法趋向前者,将 XML 的树状结构数据拆解成数成关系型数据库的型态之后再存入数据库,一旦需要存取时,再透过自订支持 XML 查询的 SQL 语法将它组合、还原成 XML 文件。
另外一种原生型数据库的做法,则是保留阶层式的 XML 格式存进数据库,并且利用 XML 的树状节点特性,进行查询节点数据或新增、删除数据。
以 SQL Server 为例,在 2000 版本时,支持 XML 的方式便是将 XML 数据转成关系型数据的存放方式,无论是储存或查询都还是使用关系型引擎为主。而 SQL Server 2005 遵循 W3C InfoSet 规格,以特有的内部结构存放 XML 文件,并保存 XML 文件语意。新的 XML 技术可以透过变量或数据域位定义 XML Schema,验证 XML 数据输入或更新时的正确性。此外可以利用业界标准 XQuery 进行查询,也引进 XML 索引技术,提升查询效率。
无独有偶,IBM 的 DB2 9.0 也提出了 pureXML 的技术与概念,诉求原生的 XML 数据型态,一改过去作法,直接保留原来树状结构的数据型态,同时也支持 XML 索引功能和 XQuery 查询。此外,在查询技术上,DB2 9.0 整合 middle ware 的技术,让开发人员可以忽略底层的数据是关系型数据库或 XML,开发人员可以透过擅长的 SQL 或 XQuery 语言进行查询,取得所需的结果。
关系型数据库的成熟度加持 XML
XML 的阶层式特性协助关系型数据库在处理数据时更为全面,同样的,关系型数据库也能为 XML 带来好处。
对于 XML 的储存、使用而言,由于它本身是档案型的数据储存方式,在安全管理的机制上并没有良善的处理方式,一旦储存在数据库中,就可以享有数据库本身的安全机制。透过关系型数据库的查询语法,也可以和其它相关记录字段作交易管理,数据库的写入锁定机制还可以解决多人作业时写入冲突的问题。此外像是搜寻、更新、备份/还原、交易管理和记录稽核等,XML 数据同样可以享受数据库带来的这些管理机制。过去需要程序开发人员劳心劳力之处,透过数据库本身的机制,就可以强化 XML 的体质。
储存为 XML 或关系型数据的裁量
XML 与关系型数据库的合流,固然为企业数据带来更全面的应用方式,但对数据库开发人员而言,既然数据库同时可以储存关系型结构化的数据与 XML 阶层式的数据,如何裁量数据储存的方式,也形成了一个挑战。
由于 XML 具有跨平台、跨组织交换数据的特性,又具有阶层性的弹性结构关系,因此企业的数据如果有 B2B 的应用需求或跨系统的交易机会,XML 是相当理想的储存方式。另外如果数据结构有经常变动的可能,关系型数据库显然较难胜任,XML 就可取而代之。这些透过 XML 数据能作更有利的应用,那么储存为 XML 数据型态就势所必然。相较之下关系型数据库在技术的成熟度上,或者查询速度上都是更有效率的数据处理方式,如非必要,利用原来的结构化储存方式即可。